package br.com.bankai.koby.repository.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

import br.com.bankai.koby.repository.dom.DomPessoa;
import br.com.bankai.koby.repository.dom.DomPessoa.DomTipoEndereco;
import br.com.graflogic.utilities.datautil.util.FormatUtil;

/**
 * 
 * @author Leonardo
 *
 */
@Entity
@Table(name = "tb_pessoa_juridica")
@PrimaryKeyJoinColumn(name = "id_pessoa")
@Inheritance(strategy = InheritanceType.JOINED)
public class PessoaJuridica extends Pessoa {

	private static final long serialVersionUID = 1074568437591270032L;

	public PessoaJuridica() {
		super();
	}

	public PessoaJuridica(Long id, String cnpj, String tipo) {
		super(id, tipo);
		setCnpj(cnpj);
	}

	@Column(name = "nu_cnpj", nullable = false)
	private String cnpj;

	@Column(name = "nu_inscricao_estadual")
	private String inscricaoEstadual;

	@Column(name = "nu_inscricao_municipal")
	private String inscricaoMunicipal;

	@Column(name = "nm_fantasia")
	private String fantasia;

	@Column(name = "in_endereco_unico", nullable = false)
	private char enderecoUnico;

	//Getters and Setters

	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public String getInscricaoEstadual() {
		return inscricaoEstadual;
	}

	public void setInscricaoEstadual(String inscricaoEstadual) {
		this.inscricaoEstadual = inscricaoEstadual;
	}

	public String getInscricaoMunicipal() {
		return inscricaoMunicipal;
	}

	public void setInscricaoMunicipal(String inscricaoMunicipal) {
		this.inscricaoMunicipal = inscricaoMunicipal;
	}

	public String getFantasia() {
		return fantasia;
	}

	public void setFantasia(String fantasia) {
		this.fantasia = fantasia;
	}

	public char getEnderecoUnico() {
		return enderecoUnico;
	}

	public void setEnderecoUnico(char enderecoUnico) {
		this.enderecoUnico = enderecoUnico;
	}

	public Endereco getEnderecoComercial() {
		return getEndereco(DomTipoEndereco.COMERCIAL);
	}

	public Endereco getEnderecoCorrespondencia() {
		return getEndereco(DomTipoEndereco.CORRESPONDENCIA);
	}

	public String getDeStatus() {
		return DomPessoa.domStatusPessoaJuridica.getDeValor(getStatus());
	}

	public String getFormattedCnpj() {
		return FormatUtil.formatCNPJ(cnpj);
	}
}